// String.h -- string class

#ifndef STRING_H_
#define STRING_H_ 0x10

#include <iostream>

using std::ostream;
using std::istream;

class String {
private:
    char * str;                     // pointer to string
    int len;                        // length of string
    static int num_strings;         // number of objects
    static const int CINLIM = 80;   // cin input limit
public:
// constructors and other methods
    String(const char * s);         // constructor
    String();                       // default constructor
    String(const String &);         // copy constructor
    ~String();                      // destructor
    int length() const {return len; }

// overloaded operator methods
    String &operator=(const String &st);
    String & operator=(const char *);
    char & operator[](int i);
    const char & operator[](int i) const;

// overloaded operator friends
    friend bool operator<(const String &st1, const String &st2);
    friend bool operator>(const String &st1, const String &st2);
    friend bool operator==(const String &st, const String &st2);
    friend ostream & operator<<(ostream & os, const String & st);
    friend istream &operator>>(istream &is, String &st);

// static function
    static int HowMany();
};

#endif //STRING_H_
